#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
//size_t my_strlen(const char* src)
//{
//	assret(src);
//	if (*src == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(src + 1);
//}
//
//char* my_strcpy(char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	char* ret = str1;
//	while (*str2)
//	{
//		*str1 = *str2;
//		str1++;
//		str2++;
//	}
//	*str1 = *str2;
//	return ret;
//}
//
//char* my_strcat(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*dest)
//		dest++;
//	while (*src)
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;
//	return ret;
//}
//
//char* my_str(char* src, size_t num)
//{
//	assert(src);
//	char* ret = src;
//	char* str1 = src;
//	char* str2 = src;
//	while (num--)
//	{
//		str1++;
//	}
//
//	return ret;
//}

//int A(int num)
//{
//	if (num < 3)
//		return 1;
//	else
//		return A(num - 1) + A(num - 2);
//}
//
//int B(int num)
//{
//	int a = 1;
//	int b = 1;
//	int c = 0;
//	while (num--)
//	{
//		a = b;
//		b = c;
//		c = a + b;
//	}
//	return c;
//}
//
//int main()
//{
//	int num = 15;
//	printf("%d %d", A(num), B(num));
//}

//int A(int num1,int num2)
//{
//	if (num2 < 2)
//		return num1;
//	else
//		return num1 * A(num1, num2 - 1);
//}
//
//int main()
//{
//	int n = 10;
//	int k = 5;
//	printf("%d", A(n, k));
//}

//int DigitSum(int n)
//{
//	if (n < 10)
//		return n;
//	else
//		return n % 10 + DigitSum(n / 10);
//}
//
//int main()
//{
//	printf("%d", DigitSum(1792));
//	return 0;
//}

//int A(int n)
//{
//	if (n < 3)
//		return n;
//	else
//		return n * A(n - 1);
//}
//
//int main()
//{
//	printf("%d", A(5));
//	return 0;
//}

//void A(int num)
//{
//	if (num < 10)
//		printf("%d ", num);
//	else
//	{
//		printf("%d ", num % 10);
//		num /= 10;
//		A(num);
//	}
//}
//
//int main()
//{
//	A(1234);
//	return 0;
//}

//char* my_str(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	int count = 0;
//	while (*src)
//	{
//		src++;
//		count++;
//	}
//	src--;
//	while (count--)
//	{
//		*dest = *src;
//		dest++;
//		src--;
//	}
//	*dest = '\0';
//	return ret;
//}
//
//int main()
//{
//	char arr1[10] = { 0 };
//	char arr2[] = "asdfgh";
//	char* p = &arr1;
//	p = my_str(arr1, arr2);
//	printf("%s", p);
//}

//size_t my_strlen(const char* src)
//{
//	assert(src);
//	if (*src == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(src + 1);
//}
//
//int main()
//{
//	char arr[] = "hiyf";
//	printf("%zd", my_strlen(arr));
//}

//int* my_str(int* dest, const int* src, size_t num)
//{
//	assert(dest && src);
//	int* ret = dest;
//	int* dest2 = src;
//	int* dest3 = dest2;
//	int count = 0;
//	while (num--)
//	{
//		if (*src % 2)
//		{
//			*dest = *src;
//			src++;
//			dest++;
//		}
//		else
//		{
//			*dest2 = *src;
//			src++;
//			dest2++;
//			count++;
//		}
//	}
//	while (count--)
//	{
//		*dest = *dest3;
//		dest++;
//		dest3++;
//	}
//	return ret;
//}
//
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6 };
//	int arr2[10] = { 0 };
//	int* p = arr2;
//	p = my_str(arr2, arr1, (sizeof(arr1) / sizeof(arr1[0])));
//
//	return 0;
//}

